این فایل خلاصه‌ی همه‌ی تغییراتیه که روی فایل‌های شتابه انجام دادم. این زیپ، کپی کامل سایته (همون ساختاری که خودت اول فرستادی) با همه‌ی این اصلاحات روی آن. فقط کافیه همین زیپ رو جایگزین فایل‌های فعلی هاست کنی و install.sql رو (بدون تغییر نسبت به قبل) ایمپورت کنی — نیازی به تغییر ساختار دیتابیس نیست.

============================================================
۱) رفع ۴۰۴ (مهم‌ترین مشکل)
============================================================
علت: سایت لینک زیبا می‌سازه (/ad/کد/عنوان) ولی .htaccess ریشه برای rewrite نداشت.
فایل .htaccess (ریشه‌ی سایت) ساخته شد و این‌ها رو مسیریابی می‌کنه:
  - /ad/کد/عنوان  → ad.php   (لینک آگهی‌ها، تو پنل و ادمین هم همین مسیر استفاده می‌شه)
  - /sitemap.xml ، /sitemap-ads-N.xml ، /robots.txt (قبلاً این‌ها هم ۴۰۴ می‌دادن)
  - /موبایل (مثل shetabe.ir/9120650943) → renew.php

============================================================
۲) پیامک تمدید + صفحه‌ی عمومی تمدید/حذف
============================================================
- cron/run.php: حداکثر یک پیامک انقضا به ازای هر کاربر در هر ۳۰ روز (نه هر بار که یک آگهی دیگرش منقضی بشه).
- inc/sms.php: لینک پیامک انقضا الان shetabe.ir/موبایل هستش (renew_url در inc/helpers.php).
- renew.php (جدید): صفحه‌ی عمومی بدون لاگین؛ فقط آگهی‌های «منقضی/نیاز به تمدید» همون موبایل رو نشون می‌ده، با دو دکمه‌ی تمدید و حذف.
- renew_pay.php (جدید): دکمه‌ی تمدید، فاکتور یکساله می‌سازه (دقیقاً مثل تمدید پنل) و بدون لاگین مستقیم می‌ره درگاه سداد.
- renew_delete.php (جدید): دکمه‌ی حذف، اول کاربر رو به صفحه‌ی ورود می‌فرسته، بعد تأیید می‌گیره و حذف می‌کنه.
(فایل‌های invoice.php / pay.php / inc/sadad.php دست‌نخورده‌اند.)

============================================================
۳) ادمین / آگهی‌ها
============================================================
- حذف دکمه‌ی تکراری «درخواست مجوز» (چون دراپ‌داون «انتقال دستی» همین کار رو می‌کنه).
- دکمه‌ی «کپی آگهی»: یک کپی با کد جدید (بزرگ‌ترین کد + ۱) و وضعیت «در انتظار» می‌سازه (بدون تصاویر؛ باید در ویرایش دوباره اضافه بشه).
- دکمه‌ی «تمدید ۱ساله (رایگان)»: تاریخ انقضا را یک سال دیگر از حالا (یا از تاریخ انقضای فعلی، هرکدام دیرتر بود) تمدید می‌کند.
- دکمه‌ی «نردبان ۱ساله (رایگان)»: سرویس نردبان اتوماتیک (که از قبل در کران‌جاب فعال بود) رو رایگان برای یک سال فعال می‌کنه.
- برای آگهی‌های «حذف‌شده»: دکمه‌ی «حذف کامل (برای همیشه)» — تصاویر و ردیف آگهی از دیتابیس پاک می‌شوند؛ فاکتورهای قبلی (برای حسابداری) باقی می‌مانند.
- یادداشت ادمین (admin_note) حالا در جستجوی ادمین/آگهی‌ها هم جستجو می‌شود (فیلد خودش از قبل در صفحه‌ی ویرایش آگهی بود).
- «۷ روز» محدودیت پیامک تمدید دستی از قبل ۹۰ روز بود (نیاز به تغییر نداشت).
- جستجوی متن کامل آگهی از قبل در ادمین وجود داشت (نیاز به تغییر نداشت).
- حذف پیام/تیکت از قبل در ادمین/تیکت‌ها وجود داشت (نیاز به تغییر نداشت).

============================================================
۴) ادمین / تنظیمات
============================================================
دکمه‌ی «نردبان ۱۰۰ آگهی تصادفی»: صد آگهی فعال به‌صورت تصادفی انتخاب و نردبان (sort_date) می‌شوند.

============================================================
۵) ادمین / دسته‌بندی‌ها و شهرها
============================================================
برای هر دسته یا شهر/استانی که زیرمجموعه نداره، یک دراپ‌داون «زیرمجموعه‌ی» اضافه شد که می‌شه با آن، آن مورد رو به یک والد دیگر منتقل کرد. (مواردی که زیرمجموعه دارند، برای جلوگیری از بهم‌ریختن ساختار، قابل جابه‌جایی نیستند — اول باید زیرمجموعه‌هاشون منتقل/حذف شوند.)

============================================================
۶) پنل کاربری — یک باگ واقعی پیدا و رفع شد ⚠️
============================================================
توی post.php، وقتی کسی پلن «یکساله» رو انتخاب و واقعاً پول پرداخت می‌کرد (یعنی مبلغ فاکتور صفر نبود)، به‌خاطر یک شرط اشتباه، ستون plan آگهی به‌جای 'year'، روی 'free' ثبت می‌شد! همین باعث می‌شد در لیست پنل، «خدمات» آگهی به‌درستی به‌عنوان «یکساله» نشون داده نشه. این شرط اشتباه حذف شد. (توجه: این فقط مقدار اولیه‌ی ثبت آگهی رو درست می‌کنه؛ بعد از تایید پرداخت، سیستم به‌درستی plan رو year می‌کرد، ولی قبل از تایید پرداخت نمایش اشتباه بود.)

============================================================
۷) فرم ثبت آگهی (post.php / inc/layout.php)
============================================================
- ترتیب فیلدها عوض شد: عنوان → توضیحات → استان/شهر → آدرس → دسته‌بندی → مبلغ → نام و نام‌خانوادگی/نام تجاری (پررنگ) → تماس‌ها → ایمیل → کلمات کلیدی.
- برچسب «دسته‌بندی» شد «جستجو در دسته‌بندی».
- برچسب دامنه شد «دامنه‌ی پیشنهادی ir متصل به آگهی».
- لینک اول «آپارات» و دومی «اینستاگرام» نام‌گذاری شدند (برای راهنمایی بهتر کاربر؛ بقیه عمومی ماندند).
- جداکننده‌ی کلمات کلیدی صریحاً «ویرگول «،»» نوشته شد.
- تیک «قوانین را می‌پذیرم» به زیر متن کامل قوانین منتقل شد (قبلاً بالای آن بود).
- فیلدهای اجباری حالا یک ستاره‌ی قرمز بعد از اسم‌شان دارند (CSS).
- در فاکتور (invoice.php / PDF فاکتور): خریدار حالا همیشه «نام + موبایل حساب کاربریِ آگهی‌دهنده» است، نه هر شماره‌تماسی که روی آگهی نمایش داده می‌شد.

============================================================
۸) بنرهای زیر هدر
============================================================
۴ تصویری که فرستادی (شتاب، سایر مجوزها، کمک به غزه، اپلیکیشن) الان زیر هدر همه‌ی صفحات نمایش داده می‌شوند (از طریق content/header.html که قبلاً خالی بود). فعلاً هر ۴ تا لینکشون # هست؛ وقتی آدرس واقعی رو دادی، کافیه همین فایل content/header.html رو ویرایش کنی (یا بگو خودم انجام بدم).
نکته: چون نتونستم به shetabe.ir دسترسی داشته باشم (robots.txt سایت اجازه نمی‌داد)، ترتیب بنرها رو خودم منطقی چیدم؛ اگر ترتیب دلخواهت فرق داره بگو عوضش کنم.

============================================================
موارد باز / نیاز به تصمیم شما
============================================================
- مورد «نوع پرداخت هم در ثبت‌آگهی هم در فاکتور، یک‌جا باشد»: چون این مستقیم به صفحه‌ی فاکتور/پرداخت واقعی مربوطه، دست نزدم تا مشخص کنی کدوم را نگه داریم (انتخاب موقع ثبت آگهی، یا فقط در فاکتور).
- «سه دکمه‌ی بالای فاکتور» و «دکمه‌ی بعداً-پرداخت زیر فاکتور» روی invoice.php: فعلاً دست نزدم (ریسک مستقیم روی صفحه‌ی پرداخت)؛ اگر دقیق‌تر بگی چی میخوای همون‌جا اضافه می‌کنم.
- ترتیب بنرهای هدر (بالا توضیح داده شد).
